@echo off
echo ========================================
echo 工作流任务不存在错误修复测试
echo ========================================
echo.

echo 问题描述：
echo 从图片中可以看到错误信息：
echo "账单审批提交失败: Cannot find task with id c80ba634-b197-11f0-8774-92e8685db625"
echo "提交失败:账单审批提交失败: Cannot find task with id c80ba634-b197-11f0-8774-92e8685db625"
echo.

echo 错误原因分析：
echo 1. 工作流任务ID c80ba634-b197-11f0-8774-92e8685db625 在Activiti中找不到
echo 2. 可能的原因：
echo    - 任务已经被完成或删除
echo    - 工作流实例已经结束
echo    - 任务ID不正确
echo    - 工作流引擎状态异常
echo.

echo 修复内容：
echo 1. 添加任务存在性检查
echo 2. 如果任务不存在，继续执行拒绝处理逻辑
echo 3. 增强错误处理和日志记录
echo.

echo 修复后的处理流程：
echo 步骤1：检查工作流任务是否存在
echo    - 使用 taskService.createTaskQuery().taskId(taskId).singleResult()
echo    - 如果任务存在，则完成任务
echo    - 如果任务不存在，记录警告并继续
echo.

echo 步骤2：更新待办任务状态（无论工作流任务是否存在）
echo    - 更新 is_handle = 1 (已处理)
echo    - 更新 status = 3 (已拒绝)
echo    - 设置 finish_time = 当前时间
echo.

echo 步骤3：清理后续步骤任务
echo    - 删除所有步骤号大于当前拒绝步骤的任务
echo.

echo 测试步骤：
echo 1. 重启后端服务
echo 2. 重启前端服务
echo 3. 访问待办任务界面
echo 4. 找到业务ID 165 的记录
echo 5. 点击第5步"账单审批"的"处理"按钮
echo 6. 选择"审批拒绝"并填写拒绝意见
echo 7. 点击"提交"
echo 8. 观察后端日志输出
echo.

echo 预期日志输出：
echo.
echo === 开始处理退住申请审批记录 ===
echo 业务ID: 165
echo 审批状态: 2 (1=通过, 2=拒绝)
echo 审批步骤: 5
echo 审批意见: 拒绝
echo 待办任务ID: 948
echo 工作流任务ID: c80ba634-b197-11f0-8774-92e8685db625
echo >>> 处理审批拒绝逻辑 <<<
echo === 退住申请审批拒绝，流程结束 ===
echo 业务ID: 165
echo 拒绝步骤: 5
echo 拒绝意见: 拒绝
echo 尝试完成工作流任务: c80ba634-b197-11f0-8774-92e8685db625
echo ⚠️ 工作流任务不存在或已被完成: c80ba634-b197-11f0-8774-92e8685db625
echo 继续执行拒绝处理逻辑...
echo === 开始更新拒绝步骤的待办任务状态 ===
echo 待办任务ID: 948
echo 找到待办任务: 948, 步骤: 5, 当前状态: 0
echo 更新结果: 成功
echo ✅ 验证更新结果: 948, 步骤: 5, 新状态: 1
echo ✅ 拒绝处理完成，不生成下一步待办任务
echo === 开始清理所有后续步骤的待办任务 ===
echo 业务ID 165 的所有待办任务:
echo   - 任务ID: 948, 步骤: 5, 状态: 1, 标题: 周老一 - 账单审批
echo   - 任务ID: xxx, 步骤: 6, 状态: 0, 标题: 周老一 - 退住审批
echo   - 任务ID: xxx, 步骤: 7, 状态: 0, 标题: 周老一 - 费用清算
echo ✅ 已删除后续步骤待办任务: xxx (步骤6)
echo ✅ 已删除后续步骤待办任务: xxx (步骤7)
echo ✅ 共删除了 2 个后续步骤的待办任务
echo.

echo 关键改进：
echo 1. 任务存在性检查：避免"Cannot find task"错误
echo 2. 容错处理：即使工作流任务不存在，也能完成拒绝处理
echo 3. 详细日志：清楚显示每个步骤的执行情况
echo 4. 继续执行：不因工作流任务问题而中断整个拒绝流程
echo.

echo 验证方法：
echo 1. 检查后端日志是否包含上述预期输出
echo 2. 确认不再出现"Cannot find task"错误
echo 3. 验证待办任务状态正确更新
echo 4. 确认后续步骤任务被清理
echo.

echo 如果问题仍然存在：
echo 1. 检查工作流引擎状态
echo 2. 检查数据库中的工作流相关表
echo 3. 考虑重置工作流实例
echo 4. 检查是否有其他异步任务干扰
echo.

pause
